style.scss 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. .remote-container {
  2. max-width: 480px;
  3. margin: 0 auto;
  4. padding: 16px;
  5. font-family: 'Pretendard', sans-serif;
  6. color: #E0E0E0;
  7. background: #1A1A2E;
  8. min-height: 100vh;
  9. }
  10. .remote-header {
  11. display: flex;
  12. align-items: center;
  13. justify-content: space-between;
  14. padding-bottom: 12px;
  15. border-bottom: 1px solid #333;
  16. margin-bottom: 16px;
  17. h1 {
  18. font-size: 18px;
  19. font-weight: 700;
  20. color: #FFF;
  21. margin: 0;
  22. }
  23. }
  24. .connection-badge {
  25. font-size: 11px;
  26. padding: 3px 8px;
  27. border-radius: 12px;
  28. font-weight: 600;
  29. &.connected { background: #1B5E20; color: #A5D6A7; }
  30. &.disconnected { background: #B71C1C; color: #EF9A9A; }
  31. }
  32. /* 컨트롤 패널 */
  33. .control-panel {
  34. display: grid;
  35. grid-template-columns: 1fr 1fr;
  36. gap: 8px;
  37. margin-bottom: 16px;
  38. }
  39. .control-btn {
  40. display: flex;
  41. align-items: center;
  42. justify-content: center;
  43. gap: 6px;
  44. padding: 12px;
  45. border: 1px solid #444;
  46. border-radius: 10px;
  47. background: #2A2A3E;
  48. color: #CCC;
  49. font-size: 13px;
  50. font-weight: 600;
  51. cursor: pointer;
  52. transition: all 0.2s;
  53. &:hover { background: #3A3A4E; }
  54. &.active { background: #FF6B35; color: #FFF; border-color: #FF6B35; }
  55. &.danger { background: #C62828; color: #FFF; border-color: #C62828; }
  56. &.full-width { grid-column: 1 / -1; }
  57. }
  58. /* 후원 목록 */
  59. .alert-list-header {
  60. display: flex;
  61. align-items: center;
  62. justify-content: space-between;
  63. margin-bottom: 8px;
  64. h2 {
  65. font-size: 15px;
  66. font-weight: 700;
  67. color: #FFF;
  68. margin: 0;
  69. }
  70. }
  71. .alert-count {
  72. font-size: 12px;
  73. color: #888;
  74. }
  75. .alert-list {
  76. display: flex;
  77. flex-direction: column;
  78. gap: 6px;
  79. }
  80. .alert-item {
  81. display: flex;
  82. align-items: center;
  83. gap: 10px;
  84. padding: 10px 12px;
  85. border-radius: 10px;
  86. background: #2A2A3E;
  87. position: relative;
  88. &.playing {
  89. background: #1A3A1A;
  90. border-left: 3px solid #4CAF50;
  91. animation: playingPulse 2s infinite;
  92. }
  93. &.failed {
  94. background: #3A1A1A;
  95. border-left: 3px solid #F44336;
  96. }
  97. &.skipped, &.ignored {
  98. opacity: 0.5;
  99. }
  100. }
  101. .alert-direction {
  102. display: flex;
  103. align-items: center;
  104. gap: 4px;
  105. font-size: 12px;
  106. color: #888;
  107. flex-shrink: 0;
  108. }
  109. .alert-arrow {
  110. color: #FF6B35;
  111. font-size: 14px;
  112. }
  113. .alert-body {
  114. flex: 1;
  115. overflow: hidden;
  116. }
  117. .alert-body-top {
  118. display: flex;
  119. align-items: center;
  120. gap: 6px;
  121. }
  122. .alert-sender-name {
  123. font-weight: 600;
  124. font-size: 13px;
  125. color: #FFD700;
  126. }
  127. .alert-amount {
  128. font-weight: 700;
  129. font-size: 13px;
  130. color: #FF6B35;
  131. }
  132. .alert-msg {
  133. font-size: 12px;
  134. color: #AAA;
  135. overflow: hidden;
  136. text-overflow: ellipsis;
  137. white-space: nowrap;
  138. margin-top: 2px;
  139. }
  140. .alert-time {
  141. font-size: 10px;
  142. color: #666;
  143. margin-top: 2px;
  144. }
  145. .alert-status-badge {
  146. font-size: 10px;
  147. padding: 2px 6px;
  148. border-radius: 4px;
  149. font-weight: 600;
  150. flex-shrink: 0;
  151. &.status-playing { background: #1B5E20; color: #A5D6A7; }
  152. &.status-queued { background: #333; color: #999; }
  153. &.status-failed { background: #B71C1C; color: #EF9A9A; }
  154. &.status-delivered { background: #1A237E; color: #9FA8DA; }
  155. &.status-skipped { background: #4A4A00; color: #999; }
  156. &.status-ignored { background: #333; color: #666; }
  157. }
  158. /* 햄버거 메뉴 */
  159. .alert-menu-btn {
  160. width: 28px;
  161. height: 28px;
  162. display: flex;
  163. align-items: center;
  164. justify-content: center;
  165. border: none;
  166. background: transparent;
  167. color: #888;
  168. cursor: pointer;
  169. border-radius: 4px;
  170. font-size: 16px;
  171. flex-shrink: 0;
  172. &:hover { background: #444; color: #FFF; }
  173. }
  174. .alert-menu-dropdown {
  175. position: absolute;
  176. right: 12px;
  177. top: 40px;
  178. background: #333;
  179. border-radius: 8px;
  180. padding: 4px 0;
  181. z-index: 10;
  182. box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
  183. min-width: 120px;
  184. }
  185. .alert-menu-item {
  186. padding: 8px 16px;
  187. font-size: 13px;
  188. color: #DDD;
  189. cursor: pointer;
  190. white-space: nowrap;
  191. &:hover { background: #444; }
  192. &.danger { color: #EF9A9A; }
  193. }
  194. .empty-list {
  195. text-align: center;
  196. color: #666;
  197. padding: 40px 0;
  198. font-size: 14px;
  199. }
  200. @keyframes playingPulse {
  201. 0%, 100% { box-shadow: 0 0 0 0 rgba(76, 175, 80, 0.3); }
  202. 50% { box-shadow: 0 0 0 4px rgba(76, 175, 80, 0); }
  203. }